extension StringKeyMix on String {
  static const Map<String, String> hxm = {
    "" : "/maintain/excited",
    "/service/login/send-sms-code-new" : "/maintain/shelved",
    "/service/login/send-voice-code" : "/maintain/initiated",
    "/service/login/sms-code-login" : "/maintain/involvement",
    "/service/login/logout" : "/maintain/reprise",
    "/service/login/login" : "/maintain/sequel",
    "/service/login/register" : "/maintain/previously",
    "/v4/index/home-page" : "/maintain/slum",
    "/v3/product/apply" : "/maintain/poorest",
    "/v3/product/detail" : "/maintain/bottom",
    "/v3/certify/credit-info" : "/maintain/flea",
    "/v3/certify/save-credit-info" : "/maintain/vessel",
    "/v3/certify/basic-person-info" : "/maintain/velaryon",
    "/credit-info/upload-image" : "/maintain/corlys",
    "/v3/certify/save-basic-info" : "/maintain/heller",
    "/v3/certify/personal-info" : "/maintain/bruno",
    "/v3/certify/save-personal-info" : "/maintain/snake",
    "/v3/certify/job-info" : "/maintain/aka",
    "/v3/certify/save-job-info" : "/maintain/founds",
    "/v3/certify/ext-info-new" : "/maintain/nymeria",
    "/v3/certify/save-ext-info-new" : "/maintain/princess",
    "/v3/bind-card/card-init" : "/maintain/queen",
    "/v3/bind-card/bind-card-new" : "/maintain/voyages",
    "/v3/product/push" : "/maintain/reference",
    "/v3/personal-center/order-list" : "/maintain/segal",
    "/v3/personal-center/user-menu" : "/maintain/amanda",
    "/v3/buried-point/upload" : "/maintain/ships",
    "/credit-info/upload-location-ios" : "/maintain/imperial",
    "/credit-info/upload-device-new-ios" : "/maintain/loosely",
    "/v3/loan-confirm/google-market-ios-new" : "/maintain/nation",
    "/service/user/upload-contents-ios" : "/maintain/yi",
    "/v3/personal-center/user-delete" : "/maintain/adult",
    "/v3/loan-confirm/loan-detail-confirm" : "/maintain/attached",
    "/v3/loan-confirm/loan-detail-push" : "/maintain/conrad",
    "/v3/loan-details/loan-details" : "/maintain/steven",
    "/v3/installment/loan-play-delay-detail" : "/maintain/dunk",
    "/v3/installment/loan-play-detail" : "/maintain/tales",
    "/v3/loan-details/generate-vcode" : "/maintain/novella",
    "/v3/loan-details/google-score" : "/maintain/trailer",
    "/user-problem/get-whatsapp" : "/maintain/teaser",
    "/v3/loan-details/contract-detail" : "/maintain/date",
    "/credit-info/upload-contacts-ios" : "/maintain/mizuno",
    "/v3/contract/agreement" : "/maintain/sonoya",
    "language" : "excited",
    "is_using_proxy_port" : "shelved",
    "is_using_vpn" : "initiated",
    "code" : "involvement",
    "message" : "reprise",
    "data" : "sequel",
    "isNeedPop" : "previously",
    "privacy" : "slum",
    "facebook" : "poorest",
    "cfBundleURLScheme" : "bottom",
    "appID" : "flea",
    "facebookDisplayName" : "vessel",
    "facebookClientToken" : "velaryon",
    "phone" : "corlys",
    "username" : "heller",
    "smsCode" : "bruno",
    "realname" : "snake",
    "sessionId" : "barack",
    "icon" : "founds",
    "iconUrl" : "nymeria",
    "linkUrl" : "princess",
    "list" : "queen",
    "type" : "voyages",
    "item" : "reference",
    "url" : "segal",
    "imgUrl" : "amanda",
    "id" : "ships",
    "productName" : "imperial",
    "productLogo" : "loosely",
    "buttonText" : "nation",
    "amountRange" : "yi",
    "amountRangeDes" : "adult",
    "termInfo" : "attached",
    "termInfoDes" : "conrad",
    "loanRate" : "steven",
    "loanRateDes" : "dunk",
    "termInfoImg" : "tales",
    "loanRateImg" : "novella",
    "productTags" : "trailer",
    "productDesc" : "teaser",
    "buttoncolor" : "mizuno",
    "buttonStatus" : "sonoya",
    "buttonExplain" : "ifans",
    "inside" : "rhys",
    "productType" : "toussaint",
    "isCopyPhone" : "steve",
    "loan_rate" : "england",
    "todayClicked" : "occurring",
    "labelText" : "officer",
    "titleText" : "chief",
    "sordDesc" : "daemon",
    "todayAppl：um" : "smith",
    "amountMax" : "rhaenyra",
    "title" : "arcy",
    "principal" : "emma",
    "interest_rate" : "alicent",
    "tenure_type" : "cooke",
    "tenure" : "olivia",
    "month_amount" : "castings",
    "total_interest" : "considine",
    "total" : "paddy",
    "schedule" : "begun",
    "repay_day" : "latter",
    "period" : "gerardis",
    "month_principal" : "vince",
    "month_interest" : "receiving",
    "remain_principal" : "close",
    "product_id" : "condal",
    "result" : "deadline",
    "msg" : "claimed",
    "productDetail" : "egerickx",
    "amountArr" : "dixie",
    "amount" : "heffernan",
    "termArr" : "mccabe",
    "amountDesc" : "simm",
    "termDesc" : "rodriguez",
    "orderNo" : "marquis",
    "orderId" : "richardson",
    "columnText" : "miranda",
    "tag1" : "atim",
    "text" : "sheila",
    "tag2" : "bower",
    "buttonUrl" : "campbell",
    "term" : "jamie",
    "term_type" : "gough",
    "hotline" : "denise",
    "value" : "ackie",
    "complaintUrl" : "henley",
    "verify" : "georgie",
    "subtitle" : "jeremiah",
    "status" : "ivanno",
    "statusName" : "regbo",
    "taskType" : "toby",
    "canClick" : "whitehouse",
    "optional" : "josh",
    "ifMust" : "regulars",
    "canClickMessage" : "secret",
    "log" : "hiding",
    "nextStep" : "socialite",
    "agreement" : "charismatic",
    "urlLink" : "playing",
    "order_no" : "watts",
    "items" : "naomi",
    "cate" : "direct",
    "inputType" : "clarkson",
    "note" : "conquered",
    "name" : "invaded",
    "enable" : "andals",
    "dateSelect" : "invasion",
    "hands" : "andal",
    "id_front" : "descended",
    "info" : "walkers",
    "id_number" : "powerful",
    "birthday" : "foundation",
    "id_back" : "notable",
    "livenessType" : "begins",
    "liveness" : "heroes",
    "thebest" : "take",
    "idcard_name" : "showrunner",
    "idcard_num" : "bloodmoon",
    "gender" : "forward",
    "year" : "moving",
    "month" : "confirmed",
    "is_need_pop" : "closer",
    "company_address" : "edging",
    "company_full_address" : "stage",
    "company_name" : "solidly",
    "company_phone" : "possibilities",
    "industry" : "completely",
    "job_type" : "abandoned",
    "monthly_income" : "speaking",
    "salary_day" : "idea",
    "salary_day_1" : "overthrow",
    "salary_type" : "ruled",
    "emergent" : "sense",
    "relation" : "offs",
    "mobile" : "better",
    "relation_text" : "applies",
    "relation_reminder" : "believes",
    "mobile_text" : "prequels",
    "mobile_reminder" : "concepts",
    "displayValue" : "projects",
    "bankType" : "involved",
    "oneName" : "individually",
    "dictProvinceList" : "develop",
    "orderType" : "wray",
    "productId" : "carly",
    "orderStatus" : "helgeland",
    "date" : "goldman",
    "noticeText" : "borenstein",
    "orderStatusDesc" : "successor",
    "orderAmount" : "speculation",
    "loanDetailUrl" : "successors",
    "dateText" : "throughs",
    "moneyText" : "documented",
    "dateValue" : "entitled",
    "overdueDays" : "documentary",
    "isLoan" : "aegon",
    "loanTime" : "animation",
    "repayTime" : "rebellion",
    "listData" : "conquest",
    "txt" : "narrated",
    "agreement_txt" : "lore",
    "agreement_url" : "histories",
    "pages" : "animated",
    "admin_area" : "motion",
    "country_code" : "contains",
    "country_name" : "followed",
    "feature_name" : "orchestral",
    "latitude" : "concert",
    "longitude" : "monday",
    "locality" : "discussed",
    "sub_admin_area" : "greenwald",
    "idfv" : "andy",
    "idfa" : "hosts",
    "initEvent" : "aftershow",
    "afKey" : "creation",
    "sceneType" : "covers",
    "deviceNo" : "photographs",
    "startTime" : "art",
    "endTime" : "illustrated",
    "storage" : "insided",
    "internal_storage_usable" : "rap",
    "internal_storage_total" : "catch",
    "ram_total_size" : "commissioned",
    "ram_usable_size" : "interviews",
    "battery_status" : "podcast",
    "battery_level" : "koink",
    "is_charging" : "geoff",
    "hardware" : "presented",
    "release" : "official",
    "brand" : "whiskies",
    "original_model" : "diageo",
    "general_data" : "starting",
    "time_zone_id" : "americas",
    "network_operator_name" : "visited",
    "network_type" : "traveling",
    "ip" : "resin",
    "network" : "wristwatch",
    "current_wifi" : "nardin",
    "bssid" : "ulysse",
    "mac" : "apparel",
    "ssid" : "ommegang",
    "up_time" : "beer",
    "remark" : "funko",
    "email" : "dolls",
    "create_time" : "bobblehead",
    "isType" : "jewelry",
    "sadas" : "weapons",
    "details" : "replica",
    "repay_plans" : "licensed",
    "description" : "games",
    "pay_time" : "merchandise",
    "firstPayTime" : "selection",
    "firstPeriodDay" : "works",
    "periods" : "performed",
    "termUnit" : "measurement",
    "sendSms" : "declined",
    "aks_pl" : "revenue",
    "weu_odk" : "warnermedia",
    "lendDetailsUrl" : "parent",
    "product_code" : "cancel",
    "user_id" : "might",
    "fail_reason" : "grew",
    "frozen_interval" : "dvr",
    "order_from" : "shifting",
    "bind_card" : "demographic",
    "loan_confirm" : "nielsen",
    "basic_push_time" : "demand",
    "extra_push_time" : "analytics",
    "completed" : "parrot",
    "update_time" : "cumulative",
    "client_type" : "channels",
    "user_from" : "grown",
    "app_from" : "zombies",
    "is_new" : "involving",
    "if_confirm_loan" : "probably",
    "installment_info" : "countryside",
    "cash_tag" : "cities",
    "audit_time" : "likes",
    "loan_time" : "telecast",
    "shopping_mode" : "becoming",
    "order_type" : "simulcasted",
    "is_reloan" : "adjusted",
    "product_new_user" : "sopranos",
    "product_reloan" : "gross",
    "first_extra_push_time" : "averaged",
    "route_code" : "ratings",
    "success_basic_push_time" : "twelfth",
    "desc" : "committee",
    "pp89sk" : "disabilities",
    "noticeStatusText" : "visionary",
    "noticeDesText" : "accepted",
    "v_code" : "access",
    "telephone" : "blue",
    "isDelay" : "nypd",
    "recProducts" : "established",
    "userOrderDetail" : "frasier",
    "detail" : "surpassing",
    "h5Url" : "scripted",
    "isScore" : "wins",
    "repayAmount" : "holds",
    "repayDate" : "guild",
    "repayList" : "numerous",
    "payCode" : "cover",
    "logo" : "podcasts",
    "vCode" : "dedicated",
    "BARcodeImg" : "podcastoficeandfire",
    "servicePhone" : "communal",
    "noticeMsg" : "organizes",
    "repayPlanDetail" : "towerofthehand",
    "repayWaitDetail" : "forums",
    "periodNo" : "net",
    "dueTime" : "winteriscoming",
    "displayAmount" : "talked",
    "totalAmount" : "facebooked",
    "periodStatus" : "engagement",
    "statusText" : "kellie",
    "check" : "helen",
    "repayDes" : "group",
    "repayYetDetail" : "sbs",
    "repayWaitCount" : "viewer",
    "delayInfo" : "th",
    "delayAmount" : "jumped",
    "delayTime" : "girl",
    "repayPlan" : "rising",
    "time" : "fastest",
    "requestType" : "explicitness",
    "topLogo" : "ambiguity",
    "repayDetail" : "moral",
    "repayTitle" : "rich",
    "repayCode" : "quoted",
    "compan：ame" : "naming",
    "dataList" : "parents",
    "content" : "routines",
    "imgList" : "burlesque",
    "bottomLogo" : "manifesting",
    "score" : "anything",
    "va" : "devotion",
    "problemType" : "extreme",
    "problemSonType" : "bbc",
    "orderDetail" : "speech",
    "isShow" : "quotes",
    "orderList" : "framed",
    "problemImage" : "timmermans",
    "problemDetail" : "frans",
    "tabs" : "dutch",
    "problemId" : "gillard",
    "sonType" : "julia",
    "images" : "cameron",
    "disposeDetail" : "prime",
    "disposeImages" : "bieber",
    "clientType" : "justin",
    "appVersion" : "gaga",
    "deviceName" : "lady",
    "deviceId" : "devoted",
    "osVersion" : "vulture",
    "appMarket" : "lap",
    "gps_adid" : "manipulated",
    "tab" : "surrounded",
  };

  static Map<String, String>? _reHxMap;

  static Map<String, String> get reHxMap {
    if (_reHxMap == null) {
      _reHxMap = {};
      for (String key in hxm.keys) {
        _reHxMap![hxm[key]!] = key;
      }
    }
    return _reHxMap!;
  }

  String get hx => hxm[this] ?? this;

  static var separator = "_";
  static List<String> keys = hxm.keys.toList();
  String get rhx {
    if (!contains(separator)) return this;
    List<String> values = split(separator);
    var i = int.parse(values[0]);
    String v = values[i];
    return v;
  }

  static Map jsonConvertMapHx(Map data) {
    Map<String, dynamic> newData = {};
    for (dynamic d in data.keys) {
      var key = reHxMap[d] ?? d;
      var value = data[d];
      if (value is Map) {
        newData[key] = jsonConvertMapHx(value);
      } else if (value is List) {
        newData[key] = jsonConvertListHx(value);
      } else {
        newData[key] = value;
      }
    }
    return newData;
  }

  static List jsonConvertListHx(List list) {
    List l = [];
    for (dynamic m in list) {
      if (m is Map) {
        l.add(jsonConvertMapHx(m));
      } else if (m is List) {
        l.add(jsonConvertListHx(m));
      } else {
        l.add(m);
      }
    }
    return l;
  }
}
